<?php
App::import('Vendor', 'php-excel-reader/excel_reader2');
class UnionsController extends AppController{ 
	var $name = 'Unions';//Unions
	var $use = array('Union');
	var $components = array('RequestHandler', 'Filter', 'FileUpload');
	var $helpers = array('Js' => array('Jquery'), 'xls');
	var $paginate = array(
        'limit' => 5,
        'order' => array(
            'Union.id' => 'desc'
        )
    );
    function index(){
    	$filter = $this->Filter->process($this);
    	$this->set('list_union', $this->Union->find('list'));
    	$this->set('unions', $this->paginate('Union', $filter));
    	$this->set('isFilter', $filter);
    }
	function view($id) {
	$this->Union->id = $id;
	$this->set('union_info', $this->Union->read());
	}
	function add() {
		$this->Union->create();
		$this->set('list_union', $this->Union->find('list'));
		$this->set('list_active', array('1'=>'Đang hoạt động','0'=>'Ngừng hoạt động'));
		if (!empty($this->data))
		{
			if ($this->Union->save($this->data)) {
				$this->flash(__('Thêm thành công Chi Đoàn.', true), array('action' => 'index'));
			}
			else{
				$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
			}
		}
	}
function edit($id) {
	$this->Union->id = $id;
	$this->set('list_union', $this->Union->find('list'));
	$this->set('list_active', array('1'=>'Đang hoạt động','0'=>'Ngừng hoạt động'));
	$this->set('id', $id);
	if (empty($this->data)) {
		$this->data = $this->Union->read();
	} else {
		if ($this->Union->save($this->data)) {
			$this->Flash(__('Cập nhật thành công thông tin Chi Đoàn.',true),array('action' => 'index'));
		}
		else{
			$this->flash(__('Thao tác thất bại. Vui lòng thử lại', true), array('action' => 'index'));
		}
	}
}
function del($id) {
		$this->Union->delete($id);
		$this->redirect(array('action' => 'index'));
	}
function delMulti(){
		if($this->data['SelectedUnions'])
		{
			$listSelect = array();
			foreach($this->data['SelectedUnions'] as $key => $value) {
				if($value != '0') {
					array_push($listSelect, $value);
		 		}
			}
			$this->set('unions', $this->Union->find('all', array('conditions'=>array('Union.id'=>$listSelect))));
			$this->Session->write('listDel', $listSelect);
		}
		else{
			if($this->Session->check('listDel')){
				foreach($this->Session->read('listDel') as $value){
					$this->Union->delete($value);
					
				}
				$this->Session->delete('listDel');
				$this->flash(__('Đã xóa thành công.', true), array('action' => 'index'));
			}
			else{
				$this->flash(__('Thao tác thất bại, vui lòng thử lại', true), array('action' => 'index'));
			}
		}
	}
	function exportXls(){
		$filter = $this->Filter->process($this);
		$this->set('unions', $this->Union->find('all', array('conditions'=>$filter)));
		}
		

	function importXls(){
		//process upload file
        $this->FileUpload->uploadDir = 'files';
		$this->FileUpload->fileModel = null;
        $this->FileUpload->allowedTypes=array('xml','xls');
        $this->FileUpload->maxFileSize='2M';

        if($this->FileUpload->uploadFile('listmems')) {
            //process import file into database
            $data = new Spreadsheet_Excel_Reader("files\\".$this->FileUpload->finalFile,true,'UTF-8');
            $this->set('data', $data);
            $tempdata = array('Union'=>array('id'=>'','parent_id'=>'', 'union_name'=>'','number'=>'','active'=>''));
            //validate
            $error_count = 0;
            for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
                if(empty($data->sheets[0]['cells'][$i][1])) {
                	$error_count = $error_count + 1;               	
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Dữ liệu rỗng ở hàng thứ '.$i.'. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                }                
                 if(empty($data->sheets[0]['cells'][$i][2])) {
                	$error_count = $error_count + 1;               	
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Dữ liệu rỗng ở hàng thứ '.$i.'. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                }
                 if(empty($data->sheets[0]['cells'][$i][3])) {
                	$error_count = $error_count + 1;               	
                	$this->FileUpload->removeFile($this->FileUpload->finalFile);
                    $this->flash(__('Dữ liệu rỗng ở hàng thứ '.$i.'. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                }
                  //Checking id if it existed
                  if($this->Union->find('count',array('conditions' => array('Union.id' => $data->sheets[0]['cells'][$i][1])))) {
                    	$error_count = $error_count + 1;
                        $this->FileUpload->removeFile($this->FileUpload->finalFile);
                    	$this->flash(__('Chi Đoàn ở hàng thứ '.$i.' đã có trong CSDL gây trùng dữ liệu. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                  }
            	//Checking parent_id if  not existed
                  if(!$this->Union->find('count',array('conditions' => array('Union.parent_id' => $data->sheets[0]['cells'][$i][3])))) {
                    	$error_count = $error_count + 1;
                        $this->FileUpload->removeFile($this->FileUpload->finalFile);
                    	$this->flash(__('Chi Đoàn trực thuộc ở hàng thứ '.$i.' chưa có trong CSDL. Vui lòng kiểm tra lại file excel.', true), array('action' => 'index'));
                  }
                
            }//kết thúc for kiểm tra file excel 
            
            $errorInsert_count = 0; //đếm lỗi insert
            if($error_count==0)    //file chuẩn, bắt đầu thêm           
            { 
                for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
            
                    $tempdata['Union']['id'] = $data->sheets[0]['cells'][$i][1];
                    $tempdata['Union']['union_name'] = $data->sheets[0]['cells'][$i][2];
                    $tempdata['Union']['parent_id'] = $data->sheets[0]['cells'][$i][3];
                    $tempdata['Union']['number'] = 0;
                    $tempdata['Union']['active'] = 0;   
                	$this->Union->set($tempdata);
            
	               if ($this->Union->save()) {
								//$this->flash(__('Thao tác thành công 1', true), array('action' => 'index'));
					}
					else {
						$errorInsert_count = $errorInsert_count +1;
						$this->FileUpload->removeFile($this->FileUpload->finalFile);
						$this->flash(__('Thêm mới bị lỗi từ Chi Đoàn có mã '.$data->sheets[0]['cells'][$i][1].", do lỗi dữ liệu nhập.", true), array('action'=>'index'));
					}
					
           		 }//kết thúc for thêm
            } //kết thúc if($error_count==0) 
            else//xuất số lỗi 
            {
            	$this->flash(__('Số lỗi = ' .$error_count.'.' , true), array('action' => 'index'));
            }
            
            if($errorInsert_count == 0 && $error_count == 0){
            $this->FileUpload->removeFile($this->FileUpload->finalFile);
            $this->flash(__('Thêm mới từ file thành công.', true), array('action' => 'index'));
            }
            
        }// kết thúc if($this->FileUpload->uploadFile('listmems')) 
        else {
            $this->flash(__('Lỗi upload file.', true), array('action' => 'index'));
        }
	}// đóng function importXls
}// đóng class controller
?>